1. Field of the Invention
This invention relates to direct printing of a file of a certain description language, such as a PDF file, and in particular, it relates to a PDF direct printing method and apparatus that employs non-sequential transfer of PDF direct print data from a client computer to a printer controller.
2. Description of Related Art
PDF direct printing is a process by which a PDF (Portable Document Format) file is sent directly to a compatible printer device without first using an application or print driver to pre-process the PDF data into a traditional print language such as PDL (Page Description Language). PDF direct printing has the advantage of improved speed and/or quality of output. However, the nature of PDF files (the arrangement of data within the file) typically requires that the entire PDF file be transferred and saved on the printer controller (such as on a hard disk or flash drive accessible by the printer controller) before any image rendering process can begin. While the content of PDF files may be organized in any order, typical PDF files are organized such that the directory of objects within the PDF file (pages, fonts, images, etc) is found at the end of the file. This is often done because it makes writing a PDF file simpler for the application that creates the file. This organization causes the PDF direct print process to require that the entire file be downloaded so that this directory can be found and processed. Without access to the directory the PDF file cannot be printed. As shown in FIG. 1, which illustrates a timing sequence for data transfer according to conventional PDF direct printing methods, the resources for page 1 through page n (n being the total number of pages in the PDF file) are transferred in that order, and then drawing commands for page 1 through page n are transferred in that order. Because of its location within the PDF file, the directory information block is transferred after the commands and resources blocks. Resources are data that used by the PDF renderer (interpreter) during the PDF rendering (interpretation) process, such as font data embedded in the PDF file (referred to as downloaded fonts), etc. As shown in FIG. 1, the rendering process starts after the entire PDF file, including all of the resources and commands as well as the directory information block, has been transferred and received by the printer. This results in a delay in the time for the first page to be printed (“first page out time”, or FPOT) and possibly an increase in overall print time, especially if the PDF file is large.
Various alternative methods have been described for PDF direct printing. One method employs an intermediate conversion process of reordering PDF resources and commands, and transmitting the converted PDF file to the printer. The converted PDF file will be printed faster than the original PDF file because data and resources for each page are “linearized” so that the printer can interpret it on the fly without waiting for the whole file to be transferred to the printer side. An example of this type of system is described in U.S. Pat. No. 6,407,821, where a conversion program residing on a print server is used to perform such conversion. Although such a method improves the overall PDF direct print in many cases, it has two disadvantages. First, it is a two-pass process where in the first pass the data is transferred from client to print server, and in the second pass the data is transferred from the print server to the printer. This means the data transmission time could be doubled. Second, it involves additional hardware (e.g. a print server) that performs the conversion task.
In another PDF direct printing method, described in U.S. Patent Publication 2004/0098410, the client extracts the cross-reference table (i.e. the directory information block) and the trailer portion of the PDF file, which is typically located at the end of the file, and transmits them to the printer first. Then, the printer analyzes the information in the cross-reference table and the trailer, and generates requests to the client regarding which part of the PDF file it needs next. In response thereto, the client transmits the requested part of the PDF file to the printer.